import RPi.GPIO as GPIO
class PWMSG90 :
    def Change_Angle(self,angle):
        self.Angle=int(angle) #舵机角度 可以用来回传
        self.PWM_SG90.ChangeDutyCycle(12.5-5*self.Angle/360) #线性转化函数
    def Chose_IO(self,io): #Chose_IO必须在init之前 并且如果过程中要换IO口
        #必须要换调用close之后再设置io口并且再次调用Init函数才能正常跑
        # 注意BOARD编号 编号可以看下面的图片 注意找BOARD编号
        # （https://cn.bing.com/images/search?view=detailV2&ccid=hJ5YvGwB&id=6CC288D92B81B4FBC9ECC1857F3DF1DFB66869B4&thid=OIP.hJ5YvGwB72TJqHETgDRI7gHaIS&mediaurl=https%3a%2f%2fimg-blog.csdnimg.cn%2f2020030311551983.png%3fx-oss-process%3dimage%2fwatermark%2ctype_ZmFuZ3poZW5naGVpdGk%2cshadow_10%2ctext_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNjE2NDcx%2csize_16%2ccolor_FFFFFF%2ct_70&exph=672&expw=600&q=%e6%a0%91%e8%8e%93%e6%b4%beboard%e5%bc%95%e8%84%9a%e5%9b%be&simid=608025880328626526&FORM=IRPRST&ck=144576142D3B6D12A9AC7859C69C7C3A&selectedIndex=0&qpvt=%e6%a0%91%e8%8e%93%e6%b4%beboard%e5%bc%95%e8%84%9a%e5%9b%be&ajaxhist=0&ajaxserp=0）
        self.Gpio=int(io)
    def init(self): #初始化过程 调用时务必先设置GPIO口
        GPIO.setmode(GPIO.BOARD)
        GPIO.warnings(False)
        self.PWM_SG90 = GPIO.PWM(Gpio, 50) #50是PWM的频率
        self.PWM_SG90.setup(Gpio,GPIO.OUT)
        self.PWM_SG90.start(0) #初始的占空比 0占空比即角度为0度
    def close(self):#结束过程 调用时务必保证INIT被调用了
        self.PWM_SG90.stop()
        self.PWM_SG90.cleanup()


